//返回值类型 函数名（参数列表）
// 函数体语句
// return表达式, 结果为对应定义的返回值类型
// 如果函数不需要返回值，声明的时候可以写void
//声明可以有多次，但是定义只能有一次
#include <stdio.h>
#include <iostream>
#include <math.h>

// #include "head_file.h"
#include "head_file.cpp"
using namespace std;
//函数声明
int max(int a, int b);
 //定义时，num1和num2没有真实数据，称为形参
int add(int num1, int num2){
    int sum = num1+num2;
    return sum;
}
//值传递时，函数的形参发生改变，不会影响实参
//num1,num2会重新开辟内存空间
void swap(int num1, int num2){
    cout<<"before changing: "<<num1<<", "<<num2<<endl;
    int temp = num1;
    num1 = num2;
    num2 = temp;
    cout<<"after changing: "<<num1<<", "<<num2<<endl;
}
int main()
{
    int a = 10;
    int b = 20;
    //a与b称为实参
    //实参值传递给形参
    int c = add(10,20);
    cout <<"the result of sum: "<<c<<endl;
    swap(a,b);
    cout<<"a= "<<a<<endl<<"b= "<<b<<endl;
    //函数在main之后时，需要先声明
    cout<<max(3,5)<<endl;
    multiply(3,5);


}

int max(int a, int b){
    return a>b?a:b;
}